package DesignPattern.Proxy.LazyLoad;

/**
 * @Author self
 * @Date 2024/8/12 20:12
 */
/*代理模式（Proxy Pattern）是一种结构型设计模式，它为其他对象提供了一种代理，以控制对这个对象的访问。
        代理模式常用于延迟加载、访问控制、日志记录、缓存等场景。*/

/*优点：
        控制访问：代理模式可以控制对实际对象的访问，比如延迟加载、权限控制等。
        延迟加载：在实际需要时才创建对象，可以提高系统性能。
        添加功能：可以在不修改实际对象的情况下，给对象添加额外功能，比如日志记录、性能监控等。
缺点：
        增加复杂性：由于引入了代理层，系统的复杂性增加，尤其是当代理和实际对象之间的区别不明显时，容易混淆。
适用场景：
        当需要控制对对象的访问（如延迟加载、权限控制）时。
        当需要在不修改对象的情况下，为对象添加功能时。
        当需要对一个耗资源的对象进行懒加载时。*/
public class ProxyPatternDemo {
    public static void main(String[] args) {
        Image image = new ProxyImage("test_image.jpg");

        // 图片将从磁盘加载
        image.display();
        System.out.println("");

        // 图片不会重新加载，直接显示
        image.display();
    }
}

